{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "caa5aff3",
   "metadata": {},
   "outputs": [],
   "source": [
    "import cv2 as cv\n",
    "import numpy as np\n",
    "#直方图均衡化\n",
    "img = cv.imread('../data/sudoku.png',0)#原图\n",
    "equ = cv.equalizeHist(img)#均衡化输出图\n",
    "res = np.vstack((img,equ)) #stacking images side-by-side\n",
    "# cv.imwrite('res.png',res)  hstack水平方向添加图像\n",
    "\n",
    "cv.imshow(\"res\", res)\n",
    "cv.waitKey(0)\n",
    "\n",
    "cv.destroyAllWindows()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "e6ed2a60",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import cv2 as cv\n",
    "import numpy as np\n",
    "from matplotlib import pyplot as plt\n",
    "\n",
    "img = cv.imread('../data/sudoku.png',0)\n",
    "equ = cv.equalizeHist(img)  #cv.equalizehist 对原图进行直方图均衡化\n",
    "\n",
    "\n",
    "#柱状图数量\n",
    "histSize = 256\n",
    "#范围\n",
    "ranges   = [0,256]\n",
    "plt.hist(img.ravel(), histSize,ranges)\n",
    "plt.show()\n",
    "plt.hist(equ.ravel(), histSize,ranges)\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "b5670ada",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.16"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
